package calendar;

import java.util.Calendar;
import java.util.Scanner;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-10-05
 * Time: 19:36
 */
//制作一个简单的日历
public class MakeCalendar {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你想要查看的日期：（提示：请按照例如2012-5-6的格式书写）");
        String dateStr=scanner.next();
        //转换成日期格式,只需要年月日所以转成sql.Date
        java.sql.Date date=java.sql.Date.valueOf(dateStr);
        //再转成日历格式
        Calendar calendar=Calendar.getInstance(); //使用默认时区和区域设置获取日历
        calendar.setTime(date); //把当前的日期转换为日历类型
    
        //后续操作：
        //星期提示：
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");
        //获取本月最大天数
        int maxDay=calendar.getActualMaximum(Calendar.DATE);
        //获取当前日期中的天数
        int nowDay=calendar.get(Calendar.DATE);
        
        //获取1号是这一周的第几天
        calendar.set(Calendar.DATE,1);
        int num=calendar.get(Calendar.DAY_OF_WEEK);
        //记录打印了的天数
        int count=0;
        //知道1号是这一周的第几天之后就需要打印他前面的空格，空格数量等于num-1
        int day=num-1;
        for(int i=1;i<=day;i++){
            System.out.print("\t");
        }
        //每七天打印出来之后要换行，所以天数模7等于0时就到了一周就要换行，
        // 那么第一周第一天不一定是在第一个位置，
        // 所以打印出来的空格也算是一周的天数，防止第一周打印出来超出日期
        count+=day;
        //正常打印每一周
        for(int i=1;i<=maxDay;i++){
            if(i==nowDay){
                //如果遍历的i和当前日子一样的话，后面多拼一个*
                System.out.print(i+"*"+"\t");
            }else{
                System.out.print(i+"\t");
            }
            count++;
            if(count%7==0){
                //当计数器的个数是7的倍数的时候，就换行操作
                System.out.println();
            }
        }
    
    }
}
